package cn.sc.allinpay.allfavour.business.setconfig;

import android.content.DialogInterface;
import android.content.Intent;
import android.text.TextUtils;

import com.alibaba.fastjson.JSON;

import cn.pai.common.listener.OnPromptListener;
import cn.pai.mvp.presenter.PaiPresenter;
import cn.sc.allinpay.allfavour.app.Constant;
import cn.sc.allinpay.allfavour.business.common.data.ConfigData;
import cn.sc.allinpay.allfavour.business.common.utils.SpUtils;
import cn.sc.allinpay.allfavour.business.main.MainActivity;

/**
 * description：参数设置
 * author：pany
 * on 2018/10/24 10:04
 */
public class SetConfigPresenter extends PaiPresenter<SetConfigContract.View> implements SetConfigContract.Presenter {


    private SetConfigMode model = new SetConfigMode();
    private ConfigData configData;

    @Override
    public void start() {
        configData = model.getGlobal().getConfigData();
        if (configData == null) {
            //配置默认数据
            configData = new ConfigData();
            configData.setIP("wsh.longyucq.com");
            configData.setPORT("80");
            StringBuffer url = new StringBuffer();
            url.append("http://").append(configData.getIP()).append(":").
                    append(configData.getPORT()).append("/wsh-oil-api/pos/");
            configData.setBASEURL(url.toString());//基本通信地址
            configData.setTEMPKEY1("dd254f3a");
            configData.setTEMPKEY2("144240d0");
        } else {
            if (configData.getIP() == null) {
                configData.setIP("wsh.longyucq.com");
            }
            if (configData.getPORT() == null) {
                configData.setPORT("80");
            }
            if (configData.getBASEURL() == null) {
                StringBuffer url = new StringBuffer();
                url.append("http://").append(configData.getIP()).append(":").
                        append(configData.getPORT()).append("/wsh-oil-api/pos/");

                configData.setBASEURL(url.toString());//基本通信地址
            }
            if (configData.getTEMPKEY1() == null) {
                configData.setTEMPKEY1("dd254f3a");
            }
            if (configData.getTEMPKEY2() == null) {
                configData.setTEMPKEY2("144240d0");
            }

        }
        view.showMerName(configData.getMerName());
        view.showBrchNo(configData.getBrchNo());
        view.showTerId(configData.getTerId());
        view.showAllinIp(configData.getIP());
        view.showAllinPort(configData.getPORT());
        view.showBrchKey(configData.getBRCHKEY());
        view.showTempKey1(configData.getTEMPKEY1());
        view.showTempKey2(configData.getTEMPKEY2());
        view.showSpOrgNo(configData.getSpOrgNo());
        view.showSpUserName(configData.getSpUserName());
        view.showSpPwd(configData.getSpPwd());
    }

    @Override
    public void save() {
        if (model.getGlobal().getPayInfo() != null) {
            view.prompt(false,"您有一笔订单状态未校正，请返回首页点击收银按钮校正", new OnPromptListener("确定") {
                @Override
                public void onPositive(DialogInterface dialog, int which) {
                    super.onPositive(dialog, which);
                    dialog.dismiss();
                    view.toActivity(MainActivity.class, null);
                    view.finish();
                }
            });
            return;
        }

        String merName = view.getMerName();
        if (TextUtils.isEmpty(merName)) {
            view.prompt("商户名称不能为空");
            return;
        }

        String brchNo = view.getBrchNo();
        if (TextUtils.isEmpty(brchNo)) {
            view.prompt("机构号不能为空");
            return;
        }

        String terId = view.getTerId();
        if (TextUtils.isEmpty(terId)) {
            view.prompt("终端号不能为空");
            return;
        }

        String allinIp = view.getAllinIp();
        if (TextUtils.isEmpty(allinIp)) {
            view.prompt("卡券主机IP不能为空");
            return;
        }

        String allinPort = view.getAllinPort();
        if (TextUtils.isEmpty(allinPort)) {
            view.prompt("卡券主机端口不能为空");
            return;
        }

        String brchKey = view.getBrchKey();
        if (TextUtils.isEmpty(brchKey)) {
            view.prompt("卡券MD5key不能为空");
            return;
        }

        String tempKey1 = view.getTempKey1();
        if (TextUtils.isEmpty(tempKey1)) {
            view.prompt("收银员key1不能为空");
            return;
        }

        String tempKey2 = view.getTempKey2();
        if (TextUtils.isEmpty(tempKey2)) {
            view.prompt("收银员key2不能为空");
            return;
        }

        String spOrgNo = view.getSpOrgNo();
        if (TextUtils.isEmpty(spOrgNo)) {
            view.prompt("商点机构号不能为空");
            return;
        }

        String spUserName = view.getSpUserName();
        if (TextUtils.isEmpty(spUserName)) {
            view.prompt("商点账号不能为空");
            return;
        }
        String spPwd = view.getSpPwd();
        if (TextUtils.isEmpty(spPwd)) {
            view.prompt("商点密码不能为空");
            return;
        }


        //POS配置参数
        ConfigData configData = new ConfigData();

        configData.setMerName(merName);//商户名称
        configData.setBrchNo(brchNo);//机构号
        configData.setTerId(terId);//终端号
        configData.setIP(allinIp);//ip
        configData.setPORT(allinPort);//端口
        StringBuffer urlBuffer = new StringBuffer();
        urlBuffer.append("http://").append(allinIp).append(":").
                append(allinPort).append("/wsh-oil-api/pos/");
        configData.setBASEURL(urlBuffer.toString());//基本通信地址
        configData.setBRCHKEY(brchKey);//万商惠分配的机构密钥明文
        configData.setTEMPKEY1(tempKey1);//修改收银员密码的秘钥1
        configData.setTEMPKEY2(tempKey2);//修改收银员密码的秘钥2
        configData.setSpOrgNo(spOrgNo);
        configData.setSpUserName(spUserName);
        configData.setSpPwd(spPwd);
        configData.setOperatorId("01");//操作员号

        model.getGlobal().setConfigData(configData);
        SpUtils.put(view.getContext(), Constant.SPNAME, Constant.SpKey.ConfigData, JSON.toJSONString(configData));
        view.toast("参数保存成功, 请重新登录");
        view.sendBroadcast(new Intent(Constant.Action.ACTION_CASHIER_LOGIN_OUT));
        view.finish();
    }
}
